package capitulo2;

/***********************************************
 * Implementando una interfaz (Objetivo 1.2)
 **********************************************/

/*
 * Como hemos mencionado antes, a una clase no se le permite 
 * heredar multiples clases en Java. 
 * Una interfaz, sin embargo, es libre de heredar infinitas interfaces. 
 */

interface Bounceable extends Moveable, Spherical{
	public void bounce();
    public void setBounceFactor(int bf);
}

interface Moveable {
    void moveIt();
}
 
interface Spherical {
    void doSphericalThing();
}

abstract class Ball implements Bounceable{ // Palabra clave "implements"

	abstract void rapidez();
	
	@Override
	public void bounce() {
		// TODO Auto-generated method stub
		
	}

}

public class Tema13_Interface extends Ball{

	// Aunque no se diga en la declaracion de arriba,
    // BeachBall implementa Bounceable, ya que la superclase
    // de BeachBall (Ball) implementa Bounceable
	
	@Override
	public void setBounceFactor(int bf) {
		// TODO Auto-generated method stub
		
	}
	
	
	
	// Si la clase Ball define algun metodo abstracto,
	// tendran que ser implementados tambien.
	
	@Override
	void rapidez() {
		// TODO Auto-generated method stub
		
	}

	
	
	/*
	 * La clase Tema13_Interface debe(non-Javadoc)
	 * @see capitulo2.Moveable#moveIt()
	 * implementar los metodos de la interface
	 * que Ball (en este caso abstract) no hizo, porque no esta obligado
	 */
	
	@Override
	public void moveIt() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void doSphericalThing() {
		// TODO Auto-generated method stub
		
	}

	
	

}
